/**
 * ajax下载文件,服务端可以将下载文件名放在pragma响应头中,以便自动获取下载文件名(不支持IE9及以下版本)
 * 
 * url: 地址
 * data: 传递参数(可为空)
 * type: 请求方式
 * header: 请求头(可为空,注意请求参数如果为json,需设置请求头"Content-Type":"application/json;charset=utf-8")
 * downloadFileName：下载文件名称(可为空)
 *
 */
function ajaxDownloadFile(url,data,type,header,downloadFileName){
	var xhh = new XMLHttpRequest();
	xhh.open(type, url,true);
	xhh.responseType = 'blob';
	if(header != null){
		for(var key in header){
			xhh.setRequestHeader(key,header[key]);
		}
	}
	xhh.onreadystatechange = function () {
		if (xhh.readyState === 4 && xhh.status === 200) {
			var filename = null;
			if(downloadFileName != null){
				filename = downloadFileName;
			}else{ 
				//默认用pragma的参数作为文件名
				var pragma = xhh.getResponseHeader("pragma");
				if(pragma != null){
					filename = decodeURIComponent(pragma);
				}
			}
			if('msSaveOrOpenBlob' in navigator){
					// Microsoft Edge and Microsoft Internet Explorer 10-11
					var blob = new Blob([xhh.response], {type: 'text/plain'});
					if(filename == null){
						filename = "下载文件";
					}
					window.navigator.msSaveOrOpenBlob(blob,filename);
			}else{
				var reader = new FileReader();
				reader.readAsDataURL(xhh.response);  // 转换为base64，可以直接放入a表情href
				reader.onload = function(e){
					// 转换完成，创建一个a标签用于下载
					var a = document.createElement('a');
					a.style.cssText = 'display:none;';
					if(filename != null){
						a.download = filename;
					}
					a.href = e.target.result;
					document.body.appendChild(a);
					a.click();
					document.body.removeChild(a);
				}
			}
		}
	};
	if(data != null){
		if(typeof(data) == "object"){
			xhh.send(JSON.stringify(data));
		}else{
			xhh.send(data);
		}
	}else{
		xhh.send();
	}
}


/**
 * ajax post下载文件,服务端可以将下载文件名放在pragma响应头中,以便自动获取下载文件名(不支持IE9及以下版本)
 * 
 * url: 地址
 * data: 传递参数(可为空)
 * header: 请求头(可为空,注意请求参数如果为json,需设置请求头"Content-Type":"application/json;charset=utf-8")
 * downloadFileName：下载文件名称(可为空)
 *
 */
function postAjaxDownloadFile(url,data,header,downloadFileName){
	if(data != null && (header == null || header["Content-Type"] == null)){
		header = {"Content-Type":"application/json;charset=utf-8"};
	}
	ajaxDownloadFile(url,data,"POST",header,downloadFileName);
}
